#ifndef LISTA_H_
#define LISTA_H_

#include <stdlib.h>


//typedef int32_t buffer;
//typedef char* buffer[512];
//typedef void buffer;

typedef struct {
	//int id;
	//int statusFS; //0:no usa, 1:rec, 2env
	int statusPD;   //0:Sleep, 1:Env, 2:rec

	int Owner;   //0 FS, 1 sincronizacion
	int Tipo;    //0:lec, 1Escr.
	int32_t Sector;
	void* Info; //informacion en caso de escritura o lectura. 512bytes
	int length;

	int sock;
	//pthread_mutex_t s_del;
}Pedido;

typedef struct tNodo{
	Pedido* Dato;
	struct tNodo* Sig;
	struct tNodo* Ant;
}tNodo;

typedef struct {
	tNodo* Actual;
	tNodo* Primero;
	tNodo* Ultimo;
	int32_t length;
	pthread_mutex_t sem;
}tLista;


void lista_init(tLista* l);
void lista_push(tLista* l, Pedido* p);
Pedido* lista_popNodo(tLista* l, tNodo* n);
tNodo* lista_getfirst(tLista* l);
tNodo* lista_getLast(tLista* l);
tNodo* lista_getNext(tLista* l, tNodo* n);

#endif /* LISTA_H_ */
